# 封装

# 封装属性 外部访问没有变化，内部可以控制属性
class Student:
    # 初始化
    def __init__(self, name):
        # __开头的属性和函数会被隐藏，只有类内可访问
        self.__name = name

    # get属性
    @property
    def name(self):
        return self.__name

    # set属性
    @name.setter
    def name(self, name):
        self.__name = name

    # del属性
    @name.deleter
    def name(self):
        del self.__name


stu1 = Student('tom')
# 外部访问方式不变
print(stu1.name)  # get
stu1.name = 'jack'  # set
print(stu1.name)
print(stu1.__dict__)
del stu1.name  # del
print(stu1.__dict__)
